package uy.edu.ort.persistencia.dao;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import uy.edu.ort.dominio.Pagina;
import uy.edu.ort.persistencia.util.HibernateUtil;

/**
 *
 * @author 153287-154559
 */
public class PaginaDAO {
    
    private Session sesion; 
    private Transaction tx;  

    public long guardaPagina(Pagina pagina) throws HibernateException 
    { 
        long id = 0;  

        try 
        { 
            iniciaOperacion(); 
            id = (Long) sesion.save(pagina); 
            tx.commit(); 
        } catch (HibernateException he) 
        { 
            handleException(he); 
            throw he; 
        } finally 
        { 
            sesion.close(); 
        }  

        return id; 
    }  
 
    private void iniciaOperacion() throws HibernateException 
    { 
        sesion = HibernateUtil.getSessionFactory().openSession(); 
        tx = sesion.beginTransaction(); 
    }  

    private void handleException(HibernateException he) throws HibernateException 
    { 
        tx.rollback(); 
        throw new HibernateException("Ocurrió un error en la capa de acceso a datos", he); 
    }
    
}
